#ifndef _LOG_READER_H
#define _LOG_READER_H

#include <string>
#include <list>
#include <fstream>
#include <sys/stat.h>
using namespace std;
#include "data.h"
#include "except.h"

class LogReader
{

private:

	string log_file; 
	string backup_file;         //由登录日志管理器生产的文件备份生成
	string unmatched_login_file;//上一次未匹配成功的记录存入该文件
	
	list<LogRec> login_record;       //用来保存登入记录的集合
	list<LogRec> logout_record;      //用来保存登出记录的集合
	list<MatchedLogRec> matched_log_record;//用来保存匹配好的日志记录
	
	void backup() throw (BackupException);         //备份日志记录文件：把原始日志记录文件备份成为以时间为后缀的文件（时间为后缀？？）
	void readBackupFile() throw (ReadException);   //读取备份的日志文件，对读取到的数据进行提取，生成登入或登出日志记录，并把该记录存入到相应的集合中
	void readUnmatchedFile() throw (ReadException);//读取上一次没有匹配的登入记录
	void match();                                  //将用户登入/登出记录匹配为完整的登录记录存入matches
	void saveUnmatchedLogin() throw(SaveException);//将匹配失败的日志记录保存在文件中
	
public:
	
	LogReader();
	LogReader(string log_file,string unmatched_login_file);
	
	//readLog函数进行文件读取然后返回一个存有匹配完成的集合
	list<MatchedLogRec>& readLog() throw (ClientException);
};

#endif
